#include<iostream>
using namespace std;
const int N=1e5+10;
int elem[N],ne[N],pre[N],h,id,n,m;
int mp[N];
bool st[N];
void init(){
	id++;
	elem[id]=1;
	mp[1]=id;
	
	ne[id]=ne[h];
	pre[ne[h]]=id;
	ne[h]=id;
	pre[id]=h;
}
void insert_right(int p,int x){
	id++;
	elem[id]=x;
	mp[x]=id;
	
	pre[id]=p;
	ne[id]=ne[p];
	pre[ne[p]]=id;
	ne[p]=id;

}
void insert_left(int p,int x){
	id++;
	elem[id]=x;
	mp[x]=id;
	
	ne[id]=p;
	ne[pre[p]]=id;
	pre[id]=pre[p];
	pre[p]=id;
}
void erase(int x){
	if(mp[x]){
		int id=mp[x];
		ne[pre[id]]=ne[id];
		pre[ne[id]]=pre[id];
		st[x]=true;
	}
}
void print(){
	for(int i=ne[h];i;i=ne[i]){
		cout<<elem[i]<<" "; 
	}
	cout<<endl;
}
int main(){
	init();
	cin>>n;
	for(int i=2;i<=n;i++){
		int x,op;
		cin>>x>>op;
		if(op==0){
			insert_left(x,i);
		}else if(op==1){
			insert_right(x,i);
		}
	}
	cin>>m;
	for(int j=1;j<=m;j++){
		int x;
		cin>>x;
		if(st[x]==true) continue;
		erase(x);
	}
	print();
	return 0;
} 
